package com.itheima.d04_api_array_sort2;

import java.util.Arrays;
import java.util.Comparator;

/**
 * 目标：了解自定义数组排序的方式
 */
public class Test2 {

    public static void main(String[] args) {
        //1.准备测试学生数据
        Student[] students = {
            new Student("小王", 180, 18),
            new Student("小张", 170, 29),
            new Student("小李", 165, 17),
            new Student("小赵", 160, 21)
        };

        //2.Arrays工具类，进行排序，未知排序规则
        Arrays.sort(students, new Comparator<Student>() {
            /**
             * 设置排序规则的方法
             *  约定1：左边对象  大于 右边对象  返回正数
             *  约定2：左边对象  小于 右边对象  返回负数
             *  约定3：左边对象  等于 右边对象  返回0
             */
            @Override
            public int compare(Student o1, Student o2) {
                return  o1.getAge()-o2.getAge();
            }
        });


        //3.匿名内部类简化
        Arrays.sort(students, (Student o1, Student o2) ->{
                return  Double.compare(o1.getHeight(), o2.getHeight());
            }
        );

        //4.Lambda缺省规则，进一步简化lambda表达式
        // 参数类型可以省略
        // 如果方法体只有一行代码，可以省略大括号和return关键字和分号
        Arrays.sort(students, ( a,  b )  -> b.getAge()-a.getAge());



        //3.打印排序结果
        for (int i = 0; i < students.length; i++) {
            System.out.println(students[i]);
        }
    }
}
